package com.flying.enUmeration;

import java.util.Arrays;

/**
 * @ClassName: EnumDemo
 * @author: 刘鹏飞
 * @date 2023/7/20 19:06
 * @Description: 枚举的使用
 *
 * 枚举的特点
 * 1. 枚举里可以使用构造方法,构造方法可以重载
 * 2. 枚举里的构造方法只能使用 private修饰,默认就是 private
 * 3. 枚举里的第一行代码要列举出所有的枚举对象
 * 4. 枚举对象在创建时,不能使用new,也不用写构造方法名, 直接枚举对象名(参数)
 * 如果调用的是空参的构造方法,() 可以省略
 * 5. 枚举类默认都有继承自 Enum 类,所以枚举不能再继承其他类的
 * 6. 枚举类也不能有子类,因为构造方法私有化了
 */
public class EnumDemo {
    public static void main(String[] args) {

        System.out.println(DayOfWeek.MON.getName());

        /*
           如果直接打印一个枚举对象,打印的不是  类型@哈希值
           打印的是枚举对象名
        */
        System.out.println(Season.SPRING.toString());
        System.out.println(Month.MAR.toString());

        //  name()  方法获取到枚举对象名
        System.out.println(Month.FEB.name());

        //  ordinal() 方法获取对象的下标
        System.out.println(Month.FEB.ordinal());

        // compareTo() 方法 返回下标之差
        System.out.println(Month.FEB.compareTo(Month.AUG));

        // valueOf() 返回一个枚举对象
        Month aug = Month.valueOf("AUG");
        System.out.println(aug == Month.AUG);

        // 获取到一个数组,数组包含所有的枚举对象
        Month[] values = Month.values();
        System.out.println(Arrays.toString(values));

    }
}
